home *** CD-ROM | disk | FTP | other *** search
- package com.extensibility.xml;
-
- import com.extensibility.xml.dt.DataTypeFactory;
- import java.util.Enumeration;
- import java.util.Hashtable;
- import java.util.Vector;
- import org.xml.sax.AttributeList;
-
- class ImportXMLHandler$EModel {
- // $FF: synthetic field
- final ImportXMLHandler this$0;
- String name;
- ImportXMLHandler.CMNode root;
- Hashtable attributes;
- Vector required;
- Hashtable idCandidates;
- Hashtable enumCandidates;
- boolean isMixed;
-
- ImportXMLHandler$EModel(ImportXMLHandler var1, String var2) {
- this.this$0 = var1;
- this.root = new ImportXMLHandler.CMNode(this.this$0, "");
- this.attributes = new Hashtable();
- this.idCandidates = new Hashtable();
- this.enumCandidates = new Hashtable();
- this.name = var2;
- }
-
- void setMixed() {
- this.isMixed = true;
- }
-
- boolean isMixed() {
- return this.isMixed;
- }
-
- public Hashtable getAttrs() {
- return this.attributes;
- }
-
- String getIDGuess() {
- String var1 = null;
- Enumeration var2 = this.idCandidates.keys();
-
- while(var2.hasMoreElements()) {
- String var3 = (String)var2.nextElement();
- if (this.idCandidates.get(var3) == Boolean.TRUE) {
- if (var1 != null) {
- return null;
- }
-
- var1 = var3;
- }
- }
-
- if (var1 == null) {
- return null;
- } else {
- Hashtable var4 = (Hashtable)this.attributes.get(var1);
- return var4.size() < 10 ? null : var1;
- }
- }
-
- boolean isEnum(String var1) {
- Object var2 = this.enumCandidates.get(var1);
- if (var2 != null && var2 != Boolean.FALSE) {
- int var3 = (Integer)var2;
- Hashtable var4 = (Hashtable)this.attributes.get(var1);
- return var4.size() < 10 && var3 > var4.size() / 10;
- } else {
- return false;
- }
- }
-
- Object incrEnumCount(String var1) {
- Object var2 = this.enumCandidates.get(var1);
- if (var2 == null) {
- return new Integer(1);
- } else {
- return var2 == Boolean.FALSE ? var2 : new Integer((Integer)var2 + 1);
- }
- }
-
- void addAttributes(AttributeList var1) {
- if (this.required == null) {
- this.required = new Vector();
-
- for(int var2 = 0; var2 < var1.getLength(); ++var2) {
- this.required.addElement(var1.getName(var2));
- }
- } else {
- for(int var6 = this.required.size() - 1; var6 >= 0; --var6) {
- if (var1.getValue((String)this.required.elementAt(var6)) == null) {
- this.required.removeElementAt(var6);
- }
- }
- }
-
- for(int var7 = 0; var7 < var1.getLength(); ++var7) {
- String var3 = var1.getName(var7);
- Hashtable var4 = (Hashtable)this.attributes.get(var3);
- if (null == var4) {
- var4 = new Hashtable();
- this.attributes.put(var3, var4);
- }
-
- String var5 = var1.getValue(var7);
- if (null != var5) {
- if (var4.containsKey(var5)) {
- this.enumCandidates.put(var3, this.incrEnumCount(var3));
- this.idCandidates.put(var3, Boolean.FALSE);
- } else if (!DTDParser.isNmToken(var5)) {
- this.enumCandidates.put(var3, Boolean.FALSE);
- this.idCandidates.put(var3, Boolean.FALSE);
- } else if (!DTDParser.isName(var5)) {
- this.idCandidates.put(var3, Boolean.FALSE);
- } else if (!this.idCandidates.containsKey(var1.getName(var7))) {
- this.idCandidates.put(var3, Boolean.TRUE);
- }
-
- var4.put(var5, var5);
- }
- }
-
- }
-
- void updateContentModel(ContentModel var1) {
- if (this.isMixed()) {
- var1.setMixed();
- this.getRoot().doNodeAsMixed(var1.getRootGroup());
- } else if (!this.getRoot().next.isEmpty()) {
- var1.setContentModel(6);
- this.getRoot().doNodeSeq(var1.getRootGroup());
- }
-
- }
-
- ElementDeclaration makeElement() {
- ElementDeclaration var1 = new ElementDeclaration(this.name, 3);
- ContentModel var2 = var1.getContentModel();
- this.updateContentModel(var2);
- return var1;
- }
-
- public void makeAttributes(ElementDeclaration var1) {
- String var2 = this.getIDGuess();
-
- AttributeDeclaration var4;
- for(Enumeration var3 = this.getAttrs().keys(); var3.hasMoreElements(); var1.add(var4)) {
- String var5 = (String)var3.nextElement();
- Hashtable var6 = (Hashtable)this.getAttrs().get(var5);
- Vector var7 = new Vector();
- Enumeration var8 = var6.keys();
-
- while(var8.hasMoreElements()) {
- var7.addElement(var8.nextElement());
- }
-
- if (var2 != null && var5.equals(var2)) {
- var4 = new AttributeDeclaration(var1, var5, DataTypeFactory.createDataType(2), this.required.indexOf(var5) >= 0, (String)null);
- } else if (this.isEnum(var5)) {
- var4 = new AttributeDeclaration(var1, var5, DataTypeFactory.createDataType(10), var7, this.required.indexOf(var5) >= 0, (String)null);
- } else {
- var4 = new AttributeDeclaration(var1, var5, DataTypeFactory.createDataType(1), this.required.indexOf(var5) >= 0, (String)null);
- }
- }
-
- }
-
- ImportXMLHandler.CMNode getRoot() {
- return this.root;
- }
- }
-